public class Main {
    /**
     * 反转字符串II
     * https://leetcode.cn/problems/reverse-string-ii/
     * 给定一个字符串 s 和一个整数 k，从字符串开头算起，每计数至 2k 个字符，就反转这 2k 字符中的前 k 个字符。
     * 如果剩余字符少于 k 个，则将剩余字符全部反转。
     * 如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。
     */
    public static void main(String[] args) {
        System.out.println("hello world 0_<");
        String s = "abcdefg";
        int k = 2;
        String result = "bacdfeg";
        System.out.println(result.equals(new Main().reverseStr(s, k)));
    }
    public String reverseStr(String s, int k) {
        char[] result = s.toCharArray();
        for (int i = 0; i < s.length(); i += 2 * k) {
            int left = i, right = i + k - 1 < s.length() - 1 ? (i + k - 1) : s.length() - 1;
            while (left < right) {
                char temp = result[left];
                result[left] = result[right];
                result[right] = temp;
                left++;
                right--;
            }
        }
        return new String(result);
    }
}
